package co.edu.uniandes.moviles.rollerjudge;

import java.util.ArrayList;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.ListActivity;
import android.content.DialogInterface;
import android.os.Bundle;
import android.util.SparseBooleanArray;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.CheckedTextView;
import android.widget.ListView;
import co.edu.uniandes.moviles.rollerjudge.logica.Deportista;
import co.edu.uniandes.moviles.rollerjudge.logica.Equipo;
import co.edu.uniandes.moviles.rollerjudge.logica.RollerJudge;
import co.edu.uniandes.moviles.rollerjudge.logica.Torneo;

public class SeleccionarParticipantesActivity extends Activity  {

	private ListView listPart;
	
	private String torneoS;
	private String genero;
	private String modalidad;
	private int distancia;
	private int max;
	private int min;
	private Equipo[] nombresEquipos;
	private String []nombres;
	private ArrayList<String> selecInd;
	private ArrayList<Equipo> selecEqui;
	
	private SparseBooleanArray booleanSelected;



	@Override
	protected void onCreate(Bundle savedInstanceState) {
		
		selecInd = new ArrayList<String> ();
		selecEqui = new ArrayList<Equipo> ();
		
		RollerJudge a = RollerJudge.darInstancia();
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_seleccionar_participantes);
		
		Bundle extras = getIntent().getExtras();
		torneoS = (String) extras.get("torneo");
		genero = (String) extras.get("genero");
		modalidad = (String) extras.get("modalidad");
		distancia = (Integer)extras.get("distancia");
		min = (Integer)extras.get("min");
		max= (Integer)extras.get("max");
		
		
		
		if(modalidad.equals("Grupo"))
		{
			ArrayList<Equipo> equipos = a.darTorneo(torneoS).getEquiposParticipantes();
			nombresEquipos = new Equipo[equipos.size()];
			int j = 0;
			for (Equipo equipo : equipos) {
				nombresEquipos[j] = equipo;				
				j++;
			}
			
			listPart = (ListView)findViewById(R.id.lstSelecioneEquipos);
			//TODOOOlistT

			listPart.setAdapter(new ArrayAdapter<Equipo>(this,
					android.R.layout.simple_list_item_multiple_choice, nombresEquipos));
			listPart.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
		}
		else{
			ArrayList<Equipo> equipos = a.darTorneo(torneoS).getEquiposParticipantes();
			ArrayList<Deportista>deportistas = new ArrayList<Deportista>();
			
			for(int i=0;i<equipos.size();i++)
			{
				ArrayList<Deportista> temp= equipos.get(i).getDeportistas();
				for(int j=0;j<temp.size();j++)
				{
					Deportista depor = temp.get(j);
					if(depor.getEdad()<=max&& depor.getGenero().equals(genero)&& depor.getEdad()>=min)
					{
						deportistas.add(depor);
					}
				}
			}
			nombres = new String[deportistas.size()];
			int j = 0;
			for (Deportista depo : deportistas) {
				nombres[j] = depo.getNombre();				
				j++;
			}

			listPart = (ListView)findViewById(R.id.lstSelecioneEquipos);
			//TODOOOlistT

			listPart.setAdapter(new ArrayAdapter<String>(this,
					android.R.layout.simple_list_item_multiple_choice, nombres));
			listPart.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
			
		}
		listPart.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
					long arg3) {
				if(modalidad.equals("Grupo")){
				CheckedTextView item = (CheckedTextView) arg1;
				Equipo selected = nombresEquipos[arg2];
				selecEqui.add(selected);
				
				}
				else
				{
					CheckedTextView item = (CheckedTextView) arg1;
					String selected = nombres[arg2];
					selecInd.add(selected);
					}
				}
			
		});
			
		
	}
	public void registrar(View view)
	{
		RollerJudge a = RollerJudge.darInstancia();
		if(modalidad.equals("Grupo"))
		{
			a.crearPruebaGrupal(a.darTorneo(torneoS),genero, min, max, distancia, selecEqui);
		}
		else
		{
			a.crearPruebaIndividual(a.darTorneo(torneoS),genero, min, max, distancia,selecInd);
		}
		showDialog("Mensaje","Se creo la prueba");
	}
	

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	@SuppressWarnings("deprecation")
	public void showDialog(String title, String message) {
		AlertDialog alertDialog = new AlertDialog.Builder(this).create();
		alertDialog.setTitle(title);
		alertDialog.setMessage(message);
		alertDialog.setButton("Aceptar", new DialogInterface.OnClickListener() {
			@Override
			public void onClick(final DialogInterface dialog, final int which) {				
				finish();
			}
		});
		alertDialog.show();
	}

}
